package colaDeProduccion;

import java.util.Observable;

import excepcionesGenerales.ExcepAtributoInvalido;

/**
 * @author      Grupo 2, Algoritmos y programacin 3, Ctedra Fontela<br>1er cuat 2007  
 * <br>Esta clase  se encarga de representar un Producto.
 */	
public class Producto extends Observable{

	private int tiempoRestante;  //-Tiempo que le resta al producto para estar construido
	private Object contenido;       //-Contenido del producto
	
	public Producto(Object ncontenido, int tiempo) throws NullPointerException,ExcepAtributoInvalido{
		if (ncontenido!= null){
			this.contenido= ncontenido;
		}else{
			throw new NullPointerException();}
		setTiempoRestante(tiempo);
	}
	/**
	 * @param tiempo      nuevo tiempoRestante del producto
	 * @throws ExcepAtributoInvalido      si el tiempo pasado por parametro es menor a cero
	 */
	public void setTiempoRestante(int tiempo)throws ExcepAtributoInvalido{
		if (tiempo < 0)
			throw new ExcepAtributoInvalido();
		else
			this.tiempoRestante=tiempo;
		actualizarObservadores();
	}
	/**
	 * @return      retorna el contenido del producto.
	 */
	public Object getContenido(){
		return this.contenido;
	}
	/**
	 * @return      retorna el tiempo restante del producto
	 */
	public int getTiempoRestante(){
		return this.tiempoRestante;
	}
	
	/**
	 * Actualiza los observadores
	 */
	public void actualizarObservadores() {
		setChanged();
		notifyObservers();
	}
	
	/**
	 * @return Un string con la info del producto
	 */
	public String toString(){
		String cadena = getContenido().toString();
		cadena += "    " + "Tiempo Restante: " + getTiempoRestante();
		return cadena;
	}
}
